<template>
  <a-card :bordered="false">

    <!-- 左侧面板 -->
    <div class="table-page-search-wrapper">
      <a-form layout="inline">
        <a-row :gutter="12">
          <a-col :md="7" :sm="8">
            <a-form-item label="字典名称" :labelCol="{span: 6}" :wrapperCol="{span: 14, offset: 1}">
              <a-input placeholder="请输入字典名称" v-model="queryParam.dictName"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="7" :sm="8">
            <a-form-item label="字典编号" :labelCol="{span: 6}" :wrapperCol="{span: 14, offset: 1}">
              <a-input placeholder="请输入字典编号" v-model="queryParam.dictCode"></a-input>
            </a-form-item>
          </a-col>
          <a-col :md="7" :sm="8">
            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
            </span>
          </a-col>
        </a-row>
      </a-form>

      <div class="table-operator" style="margin-bottom: 10px">
        <a-button @click="handleAdd" type="primary" icon="plus">添加</a-button>
      </div>

      <a-table
        ref="table"
        rowKey="id"
        size="middle"
        :columns="columns"
        :dataSource="dataSource"
        :pagination="pagination"
        :loading="loading"
        @change="handleTableChange">
        <span slot="action" slot-scope="text, record">
          <a @click="handleEdit(record)">
            <a-icon type="edit"/>
            编辑
          </a>
          <a-divider type="vertical"/>
          <a @click="editDictItem(record)"><a-icon type="setting"/> 字典配置</a>
          <a-divider type="vertical"/>
          <a-popconfirm title="确定删除吗?" @confirm="() =>handleDelete(record.id)">
            <a>删除</a>
          </a-popconfirm>
        </span>
      </a-table>

    </div>
    <dict-modal ref="modalForm" @ok="modalFormOk"></dict-modal>  <!-- 字典类型 -->
    <dict-item-list ref="dictItemList"></dict-item-list>
  </a-card>
</template>

<script>
  import { filterObj } from '@/utils/util'
  import DictModal from './modules/DictModal'
  import DictItemList from './DictItem'
  import { queryDictList,deleteDict } from '@/api/dict'

  export default {
    name: 'DictList',
    components: { DictModal, DictItemList },
    data () {
      return {
        visible: false,
        // 查询条件
        queryParam: {
          dictCode: '',
          dictName: ''
        },
        loading: false,
        dataSource: [],
        pagination: {
          current: 1,
          pageSize: 10,
          pageSizeOptions: ['10', '20', '30'],
          showTotal: (total, range) => {
            return range[0] + '-' + range[1] + ' 共' + total + '条'
          },
          showQuickJumper: true,
          showSizeChanger: true,
          total: 0
        },
        // 表头
        columns: [
          {
            title: '#',
            dataIndex: '',
            key: 'rowIndex',
            width: 120,
            align: 'center',
            customRender: function (t, r, index) {
              return parseInt(index) + 1
            }
          },
          {
            title: '字典名称',
            align: 'left',
            dataIndex: 'dictName'
          },
          {
            title: '字典编号',
            align: 'left',
            dataIndex: 'dictCode'
          },
          {
            title: '描述',
            align: 'left',
            dataIndex: 'description'
          },
          {
            title: '操作',
            dataIndex: 'action',
            align: 'center',
            scopedSlots: { customRender: 'action' }
          }
        ],
        dict: '',
        labelCol: {
          xs: { span: 8 },
          sm: { span: 5 }
        },
        wrapperCol: {
          xs: { span: 16 },
          sm: { span: 19 }
        },
        url: {
          list: '/sys/dict/list',
          delete: '/sys/dict/delete',
          exportXlsUrl: 'sys/dict/exportXls',
          importExcelUrl: 'sys/dict/importExcel'
        }
      }
    },
    computed: {
      importExcelUrl: function () {
        // return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
      }
    },
    created () {
      this.loadData()
    },
    methods: {
      loadData () {
        //加载数据
        let params = this.getQueryParams()//查询条件
        this.loading = true
        console.log('1', params)
        queryDictList(params).then((res) => {
          console.log(res)
          if (res.code == 200) {
            this.dataSource = res.data.records
            this.pagination.total = res.data.total
          } else {
            this.$message.warning(res.message)
          }
          this.loading = false
        })
      },
      getQueryParams () {
        let param = Object.assign({}, this.queryParam)
        param.current = this.pagination.current;
        param.size = this.pagination.pageSize;
        return filterObj(param)
      },
      handleTableChange(pagination, filters, sorter) {
        this.pagination = pagination;
        this.loadData();
      },
      //取消选择
      cancelDict () {
        this.dict = ''
        this.visible = false
        this.loadData()
      },
      //编辑字典数据
      editDictItem (record) {
        this.$refs.dictItemList.edit(record)
      },
      // 重置字典类型搜索框的内容
      searchReset () {
        let that = this
        that.queryParam.dictName = ''
        that.queryParam.dictCode = ''
        that.loadData()
      },
      searchQuery () {
        this.loadData()
      },
      handleEdit: function (record) {
        this.$refs.modalForm.edit(record)
        this.$refs.modalForm.title = '编辑'
        this.$refs.modalForm.disableSubmit = false
      },
      handleAdd: function () {
        this.$refs.modalForm.add()
        this.$refs.modalForm.title = '新增'
        this.$refs.modalForm.disableSubmit = false
      },
      handleDelete: function (id) {
        let that = this
        deleteDict(id).then((res) => {
          if (res.code == 200) {
            that.$message.success(res.msg);
            that.loadData();
          } else {
            that.$message.warning(res.msg);
          }
        });
      },
      modalFormOk () {
        this.loadData()
      }
    },
    watch: {
      openKeys (val) {
        console.log('openKeys', val)
      }
    }
  }
</script>
<style scoped>
</style>